//
//  CLBird.m
//  RuntimeTest
//
//  Created by Charles on 16/9/27.
//  Copyright © 2016年 Charles. All rights reserved.
//

#import "CLBird.h"
#import <objc/runtime.h>

@implementation CLBird

/**
 *  第一步：在没有找到方法时，会先调用此方法，可用于动态添加方法
 *  不动态添加
 */
+(BOOL)resolveInstanceMethod:(SEL)sel{
    NSLog(@"------->> %s called",__func__);
    //Bird 没有lookDoor 方法，我们动态添加一个lookDoor 方法
    NSLog(@"鸟不会看门，通过运行时，让鸟会看门！！");
    if ([NSStringFromSelector(sel) isEqualToString:@"lookDoor"]) {
        class_addMethod(self, sel,(IMP)lookDoor, "v@:");
    }
    return NO;
}

/**
 *  C 函数动态添加
 */
void lookDoor(){
    NSLog(@"------->> %s called",__func__);
}

- (void)fly{
    NSLog(@"鸟替狗会飞！！");
}

@end
